#pragma once

#define FBXSDK_NEW_API

struct SVertex;

/**
PaleGem's proprietary mesh representation.
*/
class IMesh
{
public:
	virtual ~IMesh() {}

	virtual ID3D11Buffer *GetVertexBuffer() = 0;
	virtual ID3D11Buffer *GetIndexBuffer() = 0;
	virtual int GetIndexCount() = 0;
	virtual int GetVertexCount() = 0;
	virtual void SetVertices(SVertex *pVerts, int vertexCount) = 0;
	virtual void SetIndices(WORD *pIndices, int indexCount) = 0;
	virtual SVertex *GetVertices(int &vertexCount) = 0;
	virtual SVertex *CopyVertices(int &vertexCount) = 0;
	virtual WORD *GetIndices(int &indexCount) = 0;
	virtual WORD *CopyIndices(int &indexCount) = 0;

	/**
	Creates the DX Index and vertex buffers.
	Will use default cube if vertices or indices are faulty.
	*/
	virtual void CreateBuffers() = 0;
};